#pragma once
#include "ASN1Encodable.h"

namespace AppliedCryptography
{
	namespace AC = AppliedCryptography;

	class ASN1Integer : public ASN1Encodable
	{
	private:
		int _value;

	protected:
		ASN1Integer(ClassBits classBits, ConstructedBit constucted, TypeNumberBits number);
		ASN1Integer(ClassBits classBits, ConstructedBit constucted, TypeNumberBits number, int value);

	public:
		ASN1Integer();
		ASN1Integer(int value);

	public:
		virtual void set(int value);
		virtual void operator=(int value);

	public:
		virtual int get() const;

	public:
		virtual std::vector<byte> getContentBits() const;

	public:
		static ASN1Integer getInstance(ASN1Encodable& obj);
	};
}; // namespace AppliedCryptography
